public abstract class AbstractExpression {
    // 成员变量：所有算式共有的操作数
    protected double num1;
    protected double num2;
    protected double result; // 计算结果
    protected boolean isValid; // 算式有效性（默认有效，子类可重写校验逻辑）

    // 构造方法：初始化操作数
    public AbstractExpression(double num1, double num2) {
        this.num1 = num1;
        this.num2 = num2;
        this.isValid = true; // 加减运算默认有效（无除数为0等问题）
        this.calculate(); // 初始化时自动计算
    }

    // 抽象方法：计算结果（子类实现具体运算）
    public abstract void calculate();

    // 抽象方法：获取算式字符串（如"3 + 5 = 8"）
    public abstract String getExpression();

    // getter方法（符合封装原则）
    public double getNum1() { return num1; }
    public double getNum2() { return num2; }
    public double getResult() { return result; }
    public boolean isValid() { return isValid; }
}
